The present disclosure relates generally to virtual systems, and more particularly, to packet transmissions from virtual systems.
A virtual machine is a piece of software that, when executed on appropriate hardware, creates an environment allowing the virtualization of an actual physical computer system. Each virtual machine running on the physical system may function as a self-contained platform, running its own operating system (OS) and software applications (processes) on one or more virtual processors.
A host machine (e.g., computer or server) is typically enabled to simultaneously run one or more virtual machines, where each virtual machine may be used by a local or remote client. The host machine allocates a certain amount of execution time from the host's physical processors to each of the virtual processors. Each virtual machine may use the allocated resources to execute applications, including operating systems known as guest operating systems.
Virtual machines often communicate with other computing devices, whether physical or virtual. When communicating with such other devices, standard networking protocols are often used. Thus, a virtual machine will transmit data packets to other devices. The hypervisor that is managing the virtual machine often has many network devices available from which to transmit a data packet. For example, the hypervisor may have multiple physical network devices or virtual network devices available. The hypervisor generally uses its own load balancing functions to determine which network devices are to be used to transmit a particular packet on behalf of a virtual machine. It is desirable to improve the manner in which such packets are transmitted to the appropriate destination.